package com.zyx.spring5msb.iocforward.factory;

import com.zyx.spring5msb.iocforward.bean.Person;
import org.springframework.beans.factory.FactoryBean;

/**
 * @author Yaxi.Zhang
 * @since 2021/9/27 15:26
 * desc: 此方式是spring创建bean方式的一种补充，用户可以按照需求创建对象,
 *       创建的对象交由spring IOC容器来进行管理, 无论是否是单例, 都是在用到的时候才会创建该对象, 不用该对象不会创建
 */
public class PersonFactoryBean implements FactoryBean<Person> {

    /**
     * 指定返回的具体对象
     */
    @Override
    public Person getObject() throws Exception {
        Person person = new Person();
        person.setId(3);
        person.setAge(28);
        return person;
    }

    /**
     * 指定返回对象的类型
     */
    @Override
    public Class<?> getObjectType() {
        return Person.class;
    }

    /**
     * 指定创建对象是否为单例对象
     */
    @Override
    public boolean isSingleton() {
        return false;
    }
}
